home *** CD-ROM | disk | FTP | other *** search
/ PC World Interactive 11 / PC World Interactive 11.iso / share / multimed / MAINACT / DATA1.CAB / Script_Files / setfps.rex < prev    next >
OS/2 REXX Batch file  |  1998-05-04  |  3KB  |  61 lines

  1. /**************************************************************
  2.  *                                                            *
  3.  *                   MainActor Rexx Script                    *
  4.  *                                                            *
  5.  *  Sets the exact representation of a requested fps rate     *
  6.  *                                                            *
  7.  *  Normally you cannot express a specific frames per second  *
  8.  *  rate with a millisecond value. For example 15fps=1000/15  *
  9.  *  =66.666667                                                *
  10.  *  This script solves this problem and always adds the       *
  11.  *  current error to the total error. When the total error    *
  12.  *  gets bigger as 1 millisecond it will be stored out.       *
  13.  *  This way the error is always <= 1 millisecond, which is   *
  14.  *  more than accepteable.                                    *
  15.  *                                                            *
  16.  *  Example: 15 fps would result in a 66, 67, 67 pattern      *
  17.  *                                                            *
  18.  *  Last modified: 10/11/97, Written by: Markus Moenig        *
  19.  *                                                            *
  20.  **************************************************************/
  21.  
  22.   say "This script sets an exact fps rate to the current picture list".
  23.  
  24.   IF GetGlobalInfo("LOADEDPROJECTS")= "0" THEN DO     /* Check if there are */
  25.    BEGIN                                              /* any projects loaded */
  26.     say "No picture list loaded! Exiting ..."         /* Failed, exiting ... */
  27.     exit
  28.    END
  29.  
  30.   IF GetProjectInfo("TYPE") <> "Picture List" THEN DO /* Only works for pictures */
  31.     say "This script needs a picture list! Exiting..."
  32.     exit
  33.    END
  34.  
  35.   say "Please enter the frames per second (fps) rate ('quit' to exit):"
  36.   pull fps
  37.   IF fps="QUIT" THEN exit
  38.  
  39.   millisec=1000 / fps                                /* Calc the millisecond rate */
  40.   millisec_int=millisec % 1                          /* Get integer representation */
  41.   millisec_err=millisec - millisec_int               /* Calc the floating point error */
  42.   millisec_totalerr=0                                /* Reset total error */
  43.  
  44.   i=1                                                /* Init loop variables */
  45.   frames=GetProjectInfo("FRAMES")
  46.   say "Setting timecodes ..."
  47.   DisableFrameContainer()                            /* Disable the Frame Container */
  48.   DO WHILE i <= frames
  49.    BEGIN
  50.      tmp=millisec_int                                /* Set integer timecode */
  51.      millisec_totalerr=millisec_totalerr + millisec_err /* and add the error for this frame */
  52.      IF millisec_totalerr >= 1.0 THEN DO             
  53.       BEGIN                                          /* If total error >= 1 millisecond : */
  54.        millisec_totalerr=millisec_totalerr - 1.0     /* substract one millisecond and add */
  55.        tmp=tmp + 1                                   /* one millisecond to the integer */
  56.       END
  57.      SetLocalTimecode(i,tmp)                         /* Set new timecode */
  58.      i=i+1
  59.     END
  60.   EnableFrameContainer()                             /* Enable the Frame Container again */
  61.   say "Finished !"